#反转单链表，反转单链表很简单！！
#定义节点，关键value,next
class Node():
    def __init__(self,value):
        self.value=value
        self.next=None

#建立链表
node1=Node(1)
node2=Node(4)
node3=Node(3)
node4=Node(9)
node5=Node(5)
node6=Node(8)

node1.next=node2
node2.next=node3
node3.next=node4
node4.next=node5
node5.next=node6


#写链表打印函数
def printlink(head):
    while head.next!=None:
        print(head.value,'-> ',end="")
        head=head.next
    print(head.value)
printlink(node1)


#反转链表
def reverse(head):
    #特殊情况处理
    if head==None:
        return head
    #定义结果表头
    last=None
    #循环获取待反转链表的每一个节点，然后反转到结果链表
    while head!=None:
        #获取每一节点，断开链表，获取每一节点到head
        tmp=head.next
        #断开后，可以操作head，将断开获取的节点的next指向结果表头，然后更新结果表头，就实现了反转
        head.next=last
        #更新结果表头
        last=head
        #反转完成，更新待反转链表
        head=tmp
    #返回结果链表，实际返回表头即可
    return last


rever=reverse(node1)
printlink(rever)